package com.huanf.controller;

import com.huanf.service.VersionService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author: 35238
 * 功能: 服务之间，如何区分版本
 * 时间: 2023-12-30 14:50
 */
@RestController
public class VersionController {

    //version值必须跟VersionServiceImpl类写的version值一样，不然注入进来的versionService是调用不了VersionServiceImpl类里面的方法。也就是说你想测试反例的话，把下一行的版本号乱改就行。别忘了改回来，不然运行报错
    @DubboReference(version = "1.huanf.0")//在yml文件配置了注册中心的话，@DubboReference就不需要加url属性
    private VersionService versionService;

    @GetMapping("/version") //浏览器访问 http://localhost:8191/version
    public void version(){
        String result = versionService.myVersion("正常访问");
        System.out.println(result);
    }

    //consumer模块的VersionController类的@DubboReference的版本号，如果跟provider模块的VersionServiceImpl类的@DubboService的版本号对不上的话，consumer模块运行就会报错

    //学习了服务之间可以进行区分版本，我们就可以实现例如对不同版本进行灰度发布，及时发现问题，让新老版本的迭代不会产生生产事故
}
